package com.eephone.ep.views.tool;

import android.graphics.Bitmap;
import android.view.View;

/**
 * Created by xyf on 2016/3/1.
 */
public class SpecTools {

    public static int getSpecSizeByMode(int specValue, Bitmap bitmap, View view) {

        /**
         * 对输入值进行判断
         */
        if (bitmap == null || view == null) {
            return 0;
        }

        /**
         * 返回值
         */
        int value;

        /**
         *  根据宽度，获取当前绘制的模式和尺寸
         */
        int specMode = View.MeasureSpec.getMode(specValue);
        int specSize = View.MeasureSpec.getSize(specValue);

        /**
         * 当specMode是EXACTLY(精确模式)
         * 表示当前绘制宽度是确定的(match_parent)
         * 所以specSize就可以作为控件宽度
         */
        if (specMode == View.MeasureSpec.EXACTLY) {
            value = specSize;
        }
        /**
         * 剩下的情况则表示
         * 当前View宽度由内容或者父ViewGroup确定
         */
        else {
            int widthByImage = bitmap.getWidth() + view.getPaddingLeft() + view.getPaddingRight();
            /**
             * AT_MOST最大值模式(wrap_content)
             * 对内容值(widthByImage)和最大值(specSize)进行对比
             * 如果内容值小，则按内容值
             * 如果内容值大，则按最大值
             */
            if (specMode == View.MeasureSpec.AT_MOST) {
                value = Math.min(widthByImage, specSize);
            }
            /**
             * UNSPECIFIED未指定模式
             * View的大小就是内容的大小
             */
            else {
                value = widthByImage;
            }
        }
        return value;
    }

}
